// import com.alibaba.druid.sql.ast.SQLExpr_ptr;
// import com.alibaba.druid.sql.ast.SQLName;
// import com.alibaba.druid.sql.ast.SQLReplaceable;
// import com.alibaba.druid.sql.ast.SQLStatementImpl;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;
#pragma once
#include "../SQLStatementImpl.h"
#include "SQLShowStatement.h"
#include "../SQLReplaceable.h"

class SQLShowTablesStatement
 :virtual public SQLStatementImpl,
  virtual public SQLShowStatement,
   virtual public SQLReplaceable
{
public:
  BOOL_ptr extended;
  SQLName_ptr database;
  SQLExpr_ptr like;

  // for mysql
  BOOL_ptr full;
  SQLExpr_ptr where;

  SHAREDOBJECT(SQLShowTablesStatement);
  SQLName_ptr getDatabase();

  SQLName_ptr getFrom();

  void setDatabase(SQLName_ptr database);

  SQLExpr_ptr getLike();

  void setLike(SQLExpr_ptr like);

  BOOL_ptr isFull();

  void setFull(BOOL_ptr full);

  SQLExpr_ptr getWhere();

  void setWhere(SQLExpr_ptr where);

  // @Override
  void accept0(SQLASTVisitor_ptr visitor);

  // @Override
  BOOL_ptr replace(SQLExpr_ptr expr, SQLExpr_ptr target);

  BOOL_ptr isExtended();

  void setExtended(BOOL_ptr extended);
};
